#include<iostream>
#include<pthread.h>
#include<unistd.h>
#include<vector>
#include"mutex.hpp"
#include<mutex>


int ticknum=1000;
my_mutex::mutex mylock;
void * routine(void * arg)
{

	while(true)
	{
		{
			my_mutex::my_lock lock1(mylock);
			//mylock.lock();
			if(ticknum > 0)
			{
				usleep(100);			
				printf("I get a ticket,have %d lost\n",ticknum--);
				//mylock.unlock();
			}
			else
			{
				//mylock.unlock();
				break;
			}
		}
	}

	return nullptr;
}

int main()
{

	std::vector<pthread_t> tid(4);
	for(int i=0; i<4; i++)
	{
		pthread_create(&tid[i],nullptr,routine,nullptr);
	}

	for(int i=0; i<4; i++)
	{
		pthread_join(tid[i],nullptr);
	}

	return 0;
}



	// pthread_t tid;
	// pthread_create(&tid ,nullptr,routine,nullptr);


	// pthread_t tid2;
	// pthread_create(&tid2 ,nullptr,routine,nullptr);
	// pthread_t tid3;
	// pthread_create(&tid3 ,nullptr,routine,nullptr);
	// pthread_t tid4;
	// pthread_create(&tid4 ,nullptr,routine,nullptr);

	// pthread_join(tid,nullptr);
	// pthread_join(tid2,nullptr);
	// pthread_join(tid3,nullptr);
	// pthread_join(tid4,nullptr);